/**
 * 工程名: 	Quickdisk
 * 文件名: 	UpDownService.java
 * 创建人:  	guo.tianxiang
 * 创建时间: 	2014-4-13 下午1:33:03
 * 版权所有：	郭天翔
 * 文件描述: 描述该文件的作用
 * -----------------------------变更记录 ----------------------------- 
 * 日期        		变更人      		版本号  		变更描述  
 * ------------------------------------------------------------------  
 * 2014-4-13     guo.tianxiang   	1.0       	first created  
 */
package com.tianxiang.service;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.io.FileUtils;

import com.tianxiang.dao.MyFileDao;
import com.tianxiang.dao.UserDao;
import com.tianxiang.model.MyFile;
import com.tianxiang.model.Owner;
import com.tianxiang.model.User;

/**
 * 用于处理文件上传和下载的Service
 * 
 * @since Quickdisk 0.1
 * @version 1.0 2014-4-13
 * @author guo.tianxiang
 */
public class UpDownService {
	OutputStream outStream = null;
	InputStream inStream = null;
	final int BUFFER_SIZE = 1024;
	float fileSize;
	float userRestSize;
	UserDao userDao=null;
	/**
	 * 
	* 上传已经存在的文件
	 */
	public int uploadExistFile(int userId,long len,int fId) {
		userDao=new UserDao();
		User user=userDao.findUserById(userId);
		MyFileDao myFileDao = new MyFileDao();
		MyFile mf=myFileDao.findFileById(fId);
		int count=mf.getCount();
		mf.setCount(count+=1);
		myFileDao.update(mf);
		System.out.println("上传文件大小为："+len+"b");
		//获取用户剩余空间大小
		userRestSize=user.getTotalspace()-user.getUsedspace();
		System.out.println("用户剩余空间为："+userRestSize+"b");
		if (len>userRestSize) {
			return 0;		//返回3表示空间剩余不足
		}
		user.setUsedspace(user.getUsedspace()+len);
		userDao.update(user);
		return 1;		//上传成功
	}
	/**
	 * 
	* 用于上传文件的实际数理函数
	* @param srcFile 要拷贝的源文件，实际是个网络流
	* @param distFile 拷贝到的位置，根据本地设置的根目录和用户要存放的位置有关
	* @return 成功返回1，失败返回-1，空间不足返回0
	 */
	public int upload(int userId,File srcFile, File destFile) {
		userDao=new UserDao();
		User user=userDao.findUserById(userId);
		System.out.println(user);
		/**
		 * 不可使用session中的user，那个user是登录时的对象，
		 * 用户多次上传文件后，空间大小会变化，但session中的对象是不变的
		 */
		//获取上传文件大小
		fileSize=srcFile.length();
		System.out.println("上传文件大小为："+fileSize+"b");
		//获取用户剩余空间大小
		userRestSize=user.getTotalspace()-user.getUsedspace();
		System.out.println("用户剩余空间为："+userRestSize+"b");
		if (fileSize>userRestSize) {
			return 0;		//返回3表示空间剩余不足
		}
		
	try {
			FileUtils.copyFile(srcFile, destFile);
			System.out.println("Copy……");
		} catch (IOException e) {
			return -1;
		}
		//更新已用空间数据
		user.setUsedspace(user.getUsedspace()+fileSize);
		userDao.update(user);
		return 1;		//上传成功
	}
	
	boolean download(){
		return false;
	}
	
	public static void main(String[] args) {
		File distFile=new File("D:\\毕业设计\\disk\\zhuguohua\\apache-tomcat-6.0.33.tar.gz");
		File srcFile=new File("G:\\TDDOWNLOAD\\apache-tomcat-6.0.33.tar.gz");
		System.out.println(new UpDownService().upload(16, srcFile, distFile));
	}
}
